/*.global setsp
.intel_syntax 
setsp:
    pushq %rax
    movq %rsp, %rax
    subq %rdi, %rax
    movq %rax, %rsp
    popq %rax
    ret

*/

/*
.global setsp
setsp:
    push %rbx
    mov %rsp, %rbx
    subq $8, %rsp
    mov %rax, (%rsp)
    leaq (%rax), %rsp
    pop %rbx
    ret
*/

/*
.global setsp
setsp:
    mov %rdi, %rax           # 将参数 x 移动到寄存器 rax
    push %rbp                # 保存调用者的基指针
    mov %rsp, %rbp           # 将当前栈指针作为基指针
    sub %rax, %rsp           # 通过减去参数 x 的值来调整栈指针
    leave                    # 恢复调用者的基指针并弹出当前栈帧
    ret                      # 返回函数
*/
/*
.global setsp
setsp:
    sub $8, %rsp  # 分配8字节的空间（sizeof(size_t)）
    mov %rsp, %rax  # 将rsp的值保存到rax寄存器中
    leaq (%rax), %rsp  # 通过将rax中的值写回rsp，来改变rsp的值
    ret
 */

  /*      .text
    .global setsp
setsp:
    movq %rdi, %rsp
    ret

*/

